The following description is provided to assist the understanding of the reader. None of the information provided or references cited is admitted to be prior art to the present invention.
Memories for computers and other devices can often contain errors that may result from many sources. For example, a bit error in a memory may result from a strike by a radiation particle in an outer space environment. In other cases, permanent errors in the device may accumulate over time, resulting in potentially catastrophic errors in the memory device.
Several known methods exist for detecting and/or correcting such errors in memory devices. For example, Reed-Solomon algorithms have been implemented in memory devices for many years. Such algorithms generally utilize an error code, or check bits, associated with data to detect and correct an error in the memory. Reed-Solomon algorithms generally function in a block fashion in which a code word is capable of detecting or correcting errors in one or more bytes of the data. For example, FIG. 1 illustrates a 32-bit data field 102 and a corresponding 16-bit check bits 104. The 32-bit data field 102 is equivalent to four 8-bit bytes, and the check bits 104 are equivalent to two 8-bit bytes. In this configuration, a Reed-Solomon algorithm is capable of correcting an error in a single 8-bit block size. In other words, the number of erroneous blocks that can be detected and corrected is one-half the number of blocks in the check bits.
However, in certain environments, it is possible for an entire device to become affected by an event, or the entire device may become defective due to accumulated permanent bit errors. In this case, the check bits in each individual device are insufficient to detect and correct multiple device errors. One solution to this problem is to increase the number of bits in the check bits, but this significantly increases the overhead, which may be defined as the number of check bits divided by the number of data bits.
It is desirable to achieve a method or a system to correct device errors and bit errors in two or more devices without increasing the overhead.